shell脚本if语句多个条件(Linux篇:shell脚本中if的“

您所在的位置:网站首页 shell 判断文件存在删除 shell脚本if语句多个条件(Linux篇:shell脚本中if的“

shell脚本if语句多个条件(Linux篇:shell脚本中if的“

2023-04-24 09:55| 来源: 网络整理| 查看: 265

本文目录Linux篇:shell脚本中if的“-e,-d,-f”shell同时满足两个的条件语句该怎么写Shell脚本中的if和case逻辑判断shell脚本中的if 参数-a至-zshell if函数中几种条件判断的区别shell多个条件判断shell 脚本 if 判断多个条件shell if 多条件判断每天三分钟搞定linux shell脚本10 字符串相关的if判断shell中if怎么判断多个条件Linux篇:shell脚本中if的“-e,-d,-f”

最近在学一段脚本中的if语句中出现了这么一句:

 if

一时没想起这个-f的意思,于是重新翻了之前的笔记,把相关的知识点总结如下:

-e filename 如果 filename存在,则为真

-d filename 如果 filename为目录,则为真 

-f filename 如果 filename为常规文件,则为真

-L filename 如果 filename为符号链接,则为真

-r filename 如果 filename可读,则为真 

-w filename 如果 filename可写,则为真 

-x filename 如果 filename可执行,则为真

-s filename 如果文件长度不为0,则为真

-h filename 如果文件是软链接,则为真

filename1 -nt filename2 如果 filename1比 filename2新,则为真。

filename1 -ot filename2 如果 filename1比 filename2旧,则为真。

-eq 等于

-ne 不等于

-gt 大于

-ge 大于等于

-lt 小于

-le 小于等于

04 字符串变量表达式

if                 如果string1等于string2,则为真,字符串允许使用赋值号做等号

if     如果string1不等于string2,则为真       

if               如果string 非空(非0),返回0(true)  

if               如果string 为空,则为真

if                    如果string 非空,返回0 (和-n类似) 

    逻辑非 !                   条件表达式的相反

if

if               如果不存在目录$num

    逻辑与 –a                   条件表达式的并列

if

    逻辑或 -o                   条件表达式的或

if

shell同时满足两个的条件语句该怎么写

判断逻辑是ok的,若grep出来为空则不存在任何问题。

只是,grep出来的有可能是多行内容,建议分开写,不要写在一行。

str=`grep ^${choice} $1`while 

先将grep的结果赋值给一个变量,然后变量放入双引号,判断是否为空。这样多行内容就不是问题。

或者,直接加个双引号也ok。

while 

这样看起来有点闹心,毕竟不方便分段调试啊。

记住-z是用于判断字符串是否为空的,既然是字符串,任何时候都别忘记加双引号。

Shell脚本中的if和case逻辑判断

在shell脚本中,if逻辑判断的基本语法为:

例如:

需要注意的是shell的判断语句也有特殊的格式,例如(($a《60)),必须有两层括号。此外还可以使用’的左边时必须留出空格):

Shell脚本中还经常用if来判断文档的属性,具体格式为:

参数-e是判断文件是否存在的,其他常用参数如下:

使用case的语法为:

case结构不限制value的个数,*代表所有其他值。下面是一个示例脚本,用来判断奇数还是偶数:

参考: 跟阿铭学Linux(第2版)

shell脚本中的if 参数-a至-z

如果file存在则为真 

不过貌似有时候-a表示为and:条件与

在表示

如果file存在且是一个块特殊文件则为真 

如果file存在且是一个字特殊文件则为真 

如果file文件存在且是一个目录则为真 

-d前的!是逻辑非 

例如: 

if  

表示后面的那个目录不存在,则执行后面的then操作 

如果file文件存在则为真 

如果file存在且是一个普通文件则为真 

如果file存在且已经设置了SGID则为真(SUID 是 Set User ID, SGID 是 Set Group ID的意思) 

如果file存在且是一个符号连接则为真 

如果file存在且已经设置粘制位则为真 

当一个目录被设置为“粘制位“(用chmod a+t),则该目录下的文件只能由 

一、超级管理员删除 

二、该目录的所有者删除 

三、该文件的所有者删除 

也就是说,即便该目录是任何人都可以写,但也只有文件的属主才可以删除文件。 

具体例子如下: 

#ls -dl /tmp 

drwxrwxrwt 4 root    root  ......... 

注意other位置的t,这便是粘连位。 

如果file存在且是一个名字管道(F如果O)则为真 

管道是linux里面进程间通信的一种方式,其他的还有像信号(signal)、信号量、消息队列、共享内存、套接字(socket)等。 

如果file存在且是可读的则为真 

如果file存在且大小不为0则为真 

如果文件描述符FD打开且指向一个终端则为真 

如果file存在且设置了SUID(set userID)则为真 

如果file存在且是可写的则为真 

如果file存在且是可执行的则为真 

如果file存在且属有效用户ID则为真 

如果file存在且属有效用户组则为真 

如果file存在且是一个符号连接则为真 

如果file存在and has been mod如果ied since it was last read则为真 

如果file存在且是一个套接字则为真 

如果file1 has been changed more recently than file2或者file1 exists and file2 does not则为真 

如果file1比file2要老,或者file2存在且file1不存在则为真 

如果file1和file2指向相同的设备和节点号则为真 

如果shell选项“optionname”开启则为真 

“string”的长度为零则为真 

“string”的长度为非零non-zero则为真 

如果2个字符串相同。“=”may be used instead of “==”for strict posix compliance则为真 

如果字符串不相等则为真 

[string1

“OP”is one of –eq,-ne,-lt,-le,-gt or –ge.These arithmetic binary oprators return true if “arg1”is equal to,not equal to,less than,less than or equal to,greater than,or greater than or equal to“agr2”,respectively.“arg1”and “agr2”are integers. 

shell if函数中几种条件判断的区别

1、整数比较: view plain copy-eq 等于,如:if -ne 不等于,如:if -gt 大于,如:if -ge 大于等于,如:if -lt 小于,如:if -le 小于等于,如:if == 等于,如:if if ((“$a“ == “$b“)) 《 小于(需要双括号),如:((“$a“ 《 “$b“)) 《= 小于等于(需要双括号),如:((“$a“ 《= “$b“)) 》 大于(需要双括号),如:((“$a“ 》 “$b“)) 》= 大于等于(需要双括号),如:((“$a“ 》= “$b“)) 特别说明的是(())字符和括号之间不需要留空格,但要求比较严格,需要留空格。2、字符串比较,上面的-eq,-nq等公式只适用于数字比较,不适用于字符比较 view plain copy= 等于,如:if == 等于,如:if ,与=等价

# 如果$a以“z“开头(模式匹配)那么将为true # 如果$a等于z*(字符匹配),那么结果为true # File globbing 和word splitting将会发生 # 如果$a等于z*(字符匹配),那么结果为true 3、括号之间的区别:对括号内变量要求严格且且敏感,但(())则相对宽松一些 view plain copy1、if 等价 但if 不等价 2、if (($a == $b)) 和 if (($a = $b))等价 if (($a == $b)) 和 if ((a == b)) 等价 4、多条件判断:&&和||适用于中举例如下: view plain copyif ((i == 1)) 和 if 等价

if 和 if ((i = 1)) || ((j = 2)) 5、其它说明:!= 不等于,如:if 这个操作符将在结构中使用模式匹配. 《 小于,在ASCII字母顺序下.如: if if 注意:在结构中“《“需要被转义. 》 大于,在ASCII字母顺序下.如: if if

shell多个条件判断

可以用case#!/bin/sh case a1 in111) ttt ;;222) ttt ;;*) bbb ;;esac

shell 脚本 if 判断多个条件

1.如果a》b且a《c

2.如果a》b或a《c

4.“||“和“&&“在SHELL里可以用吗?也就是第一个写成if 也可以吗?

可用, 但是要两个独立的 或 (( )) 看 1

5 -ne 比较数字 (numberic) ; != 比较字符 (string), 但后者拿来 比较数字也可,只是不是标准用法 -lt 是等同 《 , 但 《 只能在 shell 的数值操作符 (( )) 或 者 逻缉操作符 才可使用, -lt , -eq , -gt , -ge -le , 这些是 test , 就是 这个内建命令使用的条件操 作符, 数字用, = , != 字符用, == 这个该是 用的, 可用来比对正规表示式, 但用在 也可,只是不太正统用法

shell if 多条件判断

#其中mkdir外面的符号是esc下来那个按键上的符号,表示执行命令#!/bin/bashif ;then        echo “成立{$?}“else        echo “不成立{$?}“fi

每天三分钟搞定linux shell脚本10 字符串相关的if判断

字符串比较包括

注意 :这里的符号要 转义 ,否则变成了重定向了。

运行结果:

注意 :上面的 等号左右两侧 , 中括号内侧 一定要有空格

运行结果:

以上的例子,说明 小写字母排在字典的后面 (类似于ascii的大小)。

sort 可以对字符串排序,sort 命令会把小写字母放在前面 。

运行结果:

注意上面的 中括号内侧 一定要有空格。

注意 :有时候想在字符串比较的时候使用 正则表达式 ,可以使用 双方括号 ,如:

运行如下:

注意:上面的 双等号左右两侧,中括号内侧 一定要有空格

shell中if怎么判断多个条件

if thenStatement(s) to be executed if expression 1 is trueelif thenStatement(s) to be executed if expression 2 is trueelif thenStatement(s) to be executed if expression 3 is trueelseStatement(s) to be executed if no expression is truefi



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3